#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <stddef.h>
#include <stdlib.h>
#include <limits.h>
#include <errno.h>
#include "types.h"

extern void list_init();
extern void list_destroy();

//elements
extern int list_hasElement_name(char *name);
extern int list_hasElement_hashcode(unsigned long hashcode);
extern void list_insert_element(char type, unsigned long hash_ID, void **data);
extern void list_get_next_element_init();	//should be initiated everytime you want to start a fresh traverse
extern void list_get_next_element(NODE **n);

//nodes
extern void list_insert_node(char *name, int id, int g_id);
extern int list_node_exists(int node);
extern void list_modify_node_value(int id,double new_val);
extern void list_print_nodes();
extern void list_node_print_flag (char *usr_print_node);

//g2nodes
extern void list_insert_g2node(char *name, int id);
extern int list_g2node_exists(int node);
extern void list_modify_g2node_value(int id,double new_val);
extern void list_print_g2nodes();
extern void list_g2node_print_flag (char *usr_print_node);



extern void list_assign_final_values(int N, int n, double *x);
